이 책이 나온 2008년에도 코드의 종말을 말하는 사람이 있었다. 코드를 자동으로 생성하는 시대가 올것이라고 말이다. 실제로 2023년 Chat-GPT가 나오면서 많은 사람들이 코드를 자동으로 생성하여 사용하는 시대가 왔다. 그럼 현재 코드 레벨을 다루는 것은 의미가 없을까? 그렇지 않다. 코드가 사라질 가망은 전혀 없다. 왜냐하면 코드는 요구사항을 효율적이고 상세하게 표현하는 가장 좋은 수단이기 때문이다.
일정 수준 이상 복잡한 요구사항은 사람이 의사소통할 때 사용하는 언어로는 비 효율적이다. 프롬프트를 코드로 바꿔주는 시대가 왔음에도 결국 복잡한 요구사항은 사람이 코드를 작성하여 상세하게 표현해야 한다. 즉, 기계가 완벽히 예측 가능하게 동작하기 위한 상세한 요구사항을 명시하는 작업, 이것이 프로그래밍이고 그 결과가 코드이다. 코드는 요구사항을 표현하는 언어라는 사실을 명심해야 한다. 어느 순간에는 정밀한 표현이 필요하고, 그러므로 코드는 항상 존재한다.
나쁜 코드를 짜본 경험은 모두가 있다. 아마도 급해서 그럴 것이다. 나중에 손보겠다고 다짐했던 코드를 우린 다시 보지 않는다.
나쁜 코드는 생산성을 극도로 떨어뜨린다. 프로젝트를 만드는건 쉬워도 고치는건 어렵다. 어렵기 떄문에 점점 쌓여간다. 생산성은 결국 0으로 수렴한다. 마침내 팀은 처음부터 새로 설계하자고 한다. 새로운 팀은 다시 처음부터 지금까지 제공했던 모든 기능을 포함한 시스템을 만든다. 재설계가 완료될쯤엔 새로운 팀이 재설계를 요구하거나 회사가 이미 없다.
전문적인 개발자는 코드의 품질과 작업의 결과물에 대해 개인적인 책임감을 가진다. 나쁜코드에 대한 합리화를 거부하고, 또 관리자의 시간적 압박으로 부터 좋은 코드를 사수해야 한다.
깨끗한 코드에 대해서는 사람마다 정의가 다르다. 이 책에서는 깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스를 만드는 방법을 알려준다. 모든 방법을 따를 필요는 없다. 다만 이 책을 읽을땐 이 방법을 따르다보면 저자들이 무슨 생각으로 이런 기법을 주장하는지 깨닫고 본인의 생각이나 주장을 더 강화할 수 있다.
코드는 한 번 잘짜면 끝이 아니다. 계속해서 관심을 주면서 시간이 지나도 언제나 깨끗할 수 있도록 유지해야 한다.
"캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라"